Repository navigation
2.1.0 - #54
2.1.0#54
Conversation
… ancient print_function import
peterabolins
left a comment
There was a problem hiding this comment.
I tested 2.1.0 against LexicRo, which uses verbecc for Romanian.
Conjugation output: no regressions. I dumped CompleteConjugator(lang="ro").conjugate(v).to_json() for all 6,869 Romanian verbs on 2.0.3 and on this branch. Every one is byte-identical, even with the move to dataclass-wizard 1.0 and scikit-learn 1.9. The only difference is pred_score on predicted verbs (e.g. blogui 0.9978 → 0.9959), because the model is retrained under the newer scikit-learn. The chosen template and forms are the same. The #49 fixes survive the move, and #50 and #53 are unchanged, as expected.
Two things need fixing before release, though.
- The built wheel contains no data (blocker)
pip wheel . on this branch gives a 181-file wheel with none of verbecc/config/.yaml or verbecc/data/xml/**/.xml. A normal install fails on first use:
ModuleNotFoundError: No module named 'verbecc.config'
There are two causes:
[tool.setuptools.package-data] is keyed trained_models, which isn't a package, so the globs match nothing.
config/ and data/ have no init.py, so packages.find skips them.
CI doesn't catch this because it uses pip install -e ".[dev]", which reads the source tree directly. This fixes it:
[tool.setuptools.package-data]
verbecc = [
"py.typed",
"config/.yaml",
"data/xml/conjugations/.xml",
"data/xml/verbs/.xml",
"data/models/",
]
A CI step that builds the wheel, installs it into a clean venv and conjugates one verb per language would prevent this happening again.
- from verbecc import CompleteConjugator no longer works
src/verbecc/init.py is now empty, so the entry point shown in the README raises ImportError, and every existing consumer breaks. The changelog flags that some imports may break, but this is the main public entry point, not an internal path. It's worth keeping, and it can be kept without breaking R006 by re-exporting one level at a time:
src/verbecc/init.py
from .core import CompleteConjugator as CompleteConjugator
src/verbecc/core/init.py
from .conjugator import CompleteConjugator as CompleteConjugator
src/verbecc/core/conjugator/init.py
from .complete_conjugator import CompleteConjugator as CompleteConjugator
This loads nothing new, since CompleteConjugator pulls in the whole conjugator anyway, and there are no circular-import problems. If you'd rather make the break on purpose, please document the new path (verbecc.core.conjugator.complete_conjugator) in the README and in the changelog's breaking-changes section.
With both fixes applied, the wheel installs cleanly, all six languages conjugate, and the test suite passes (556 passed, 2 skipped).
|
Thanks for the review @peterabolins I believe I've addressed the two blockers you mentioned. Apologies for the delay, I haven't had much free time to allocate to this project. If you don't mind, please give it a final lookover. |
There was a problem hiding this comment.
🟡 Changes recommended
The XML serializer converts encoded bytes to their Python representation rather than decoding them, making generated XML unparsable and turning accented characters into literal escape sequences.
2 open issues
What changed in this PR
Verbecc 2.1.0 modernizes the package structure and development workflow while preserving the public CompleteConjugator entry point.
Changes:
- Moves implementation and resources to a standard
srclayout undersrc/verbecc, replacingverbecc.srcwithverbecc.core. - Drops Python 3.9 support, adopts uv-based development and CI, and updates packaging and dependencies.
- Modernizes typing and XML utilities, simplifies exports, and adds public API checks, wheel smoke tests, documentation, and branding assets.
This pull request requires changes. The unresolved findings are:
- Critical:
xml_utils.py:31converts serialized bytes to their Python representation rather than decoding them, producing invalid XML output. - Moderate:
complete_conjugation.py:55fully serializes conjugations merely to iterate mood keys; use the existing public iterator. - Moderate:
mood_conjugation_util.py:18serializes both inputs merely to obtain tense keys, adding allocations to normal conjugation; iterate directly. - Moderate:
tests/scripts/test_xml_modifier.py:20,31retains old XML paths, causingFileNotFoundErrorwhen the development test is enabled. - Moderate:
tests/test_code_style/test_imports.py:26misses indented absolute imports in package initializers. - Moderate:
tests/test_code_style/test_imports.py:37can accept failed scans as successful because it checks only empty stdout, not stderr and process status.
| File | Description |
|---|---|
verbecc/src/utils/config/__init__.py |
Removes legacy configuration exports. |
verbecc/src/parsers/verbs_parser.py |
Removes old-location verbs parser. |
verbecc/src/parsers/verb_parser.py |
Removes old-location verb parser. |
verbecc/src/parsers/parser.py |
Removes old-location parser interface. |
verbecc/src/parsers/mood_template_parser.py |
Removes old-location mood parser. |
verbecc/src/parsers/conjugation_template_parser.py |
Removes old-location template parser. |
verbecc/src/defs/types/tense/tenses.py |
Removes legacy tense registry. |
verbecc/src/defs/types/tense/__init__.py |
Removes legacy tense exports. |
verbecc/src/defs/types/pronoun/pronouns.py |
Removes legacy pronoun registry. |
verbecc/src/defs/types/pronoun/__init__.py |
Removes legacy pronoun exports. |
verbecc/src/defs/types/mood/moods.py |
Removes legacy mood registry. |
verbecc/src/defs/types/mood/__init__.py |
Removes legacy mood exports. |
verbecc/src/defs/types/lang_specific_options/__init__.py |
Removes legacy option exports. |
verbecc/src/defs/types/exceptions/__init__.py |
Removes legacy exception exports. |
verbecc/src/defs/types/data/mood_template.py |
Removes old-location mood template. |
verbecc/src/defs/types/conjugation/verb_info_data.py |
Removes legacy verb-data alias. |
verbecc/src/defs/types/conjugation/tense_conjugation_data.py |
Removes legacy tense-data alias. |
verbecc/src/defs/types/conjugation/moods_conjugation_data.py |
Removes legacy moods-data alias. |
verbecc/src/defs/types/conjugation/mood_conjugation_data.py |
Removes legacy mood-data alias. |
verbecc/src/defs/types/conjugation/complete_conjugation_data.py |
Removes legacy complete-data alias. |
verbecc/src/defs/types/conjugation/__init__.py |
Removes legacy conjugation exports. |
verbecc/src/defs/types/config/logging/logging_config.py |
Removes old-location logging model. |
verbecc/src/defs/types/config/logging/__init__.py |
Removes legacy logging exports. |
verbecc/__init__.py |
Removes pre-src-layout package entry point. |
typings/jsbeautifier/__init__.pyi |
Adds jsbeautifier type stubs. |
tox.ini |
Removes pip-based test configuration. |
tests/test_types/test_verbs.py |
Updates imports and annotations. |
tests/test_to_json.py |
Updates imports and fixture typing. |
tests/test_string_utils.py |
Updates imports; removes obsolete compatibility test. |
tests/test_public_api.py |
Tests public re-exports and conjugation. |
tests/test_parser/test_verbs_parser.py |
Updates parser imports. |
tests/test_parser/test_verb_parser.py |
Updates imports and mock typing. |
tests/test_parser/test_tense_and_person.py |
Uses shared XML type alias. |
tests/test_parser/test_conjugation_template.py |
Updates imports and mock typing. |
tests/test_mlconjug.py |
Updates imports and public verb access. |
tests/test_localization.py |
Updates imports and annotations. |
tests/test_inflectors/test_inflector_fr_to_yaml.py |
Updates imports and fixture typing. |
tests/test_inflectors/test_inflector_fr_to_json.py |
Updates imports, helper loading, and annotations. |
tests/test_inflectors/test_inflector_ca_to_json.py |
Updates imports and expected-data typing. |
tests/test_code_style/test_imports.py |
Adds initializer import-style checks. |
tests/test_code_style/test_ast.py |
Modernizes AST-check annotations. |
tests/scripts/test_xml_modifier.py |
Converts development-test paths to Path. |
tests/common.py |
Annotates JSON comparison internals. |
STYLE_GUIDE.md |
Moves standalone guidance into contributing documentation. |
src/verbecc/resources/icons/README.md |
Documents icon conversion commands. |
src/verbecc/resources/icons/logo.svg |
Adds source logo artwork. |
src/verbecc/resources/icons/logo-android.svg |
Adds path-based logo variant. |
src/verbecc/resources/icons/feature-graphic.svg |
Adds promotional graphic artwork. |
src/verbecc/py.typed |
Marks the package as typed. |
src/verbecc/data/models/dummy-file-because-github-doesnt-like-large-files.md |
Documents model-directory placeholder. |
src/verbecc/core/utils/yaml_utils.py |
Updates commented import examples. |
src/verbecc/core/utils/xml_utils.py |
Adds shared XML wrapper functions. |
src/verbecc/core/utils/utils.py |
Updates model-training imports. |
src/verbecc/core/utils/string_utils.py |
Modernizes typing; removes Python 2 compatibility. |
src/verbecc/core/utils/logging_utils.py |
Updates logging configuration import. |
src/verbecc/core/utils/json_utils.py |
Updates imports and typing suppression. |
src/verbecc/core/utils/jsbeautifier_utils.py |
Updates imports and removes duplication. |
src/verbecc/core/utils/dict_utils.py |
Modernizes recursive utility annotations. |
src/verbecc/core/utils/config/verbecc_config_util.py |
Updates imports and YAML result typing. |
src/verbecc/core/utils/config/logging_config_util.py |
Updates imports and parsed-data typing. |
src/verbecc/core/utils/config/base_config_util.py |
Uses standard resource APIs; removes legacy fallbacks. |
src/verbecc/core/utils/config/__init__.py |
Simplifies configuration package exports. |
src/verbecc/core/utils/__init__.py |
Relocates utility package marker. |
src/verbecc/core/parsers/verbs_parser.py |
Relocates parser and reads resource bytes. |
src/verbecc/core/parsers/verb_parser.py |
Uses shared XML aliases and helpers. |
src/verbecc/core/parsers/tense_template_parser.py |
Uses shared XML helpers and types. |
src/verbecc/core/parsers/person_ending_parser.py |
Uses shared XML text and lookup helpers. |
src/verbecc/core/parsers/parser.py |
Relocates typed parser interface. |
src/verbecc/core/parsers/mood_template_parser.py |
Relocates parser and updates XML typing. |
src/verbecc/core/parsers/conjugations_parser.py |
Updates resource APIs, imports, and XML typing. |
src/verbecc/core/parsers/conjugation_template_parser.py |
Uses XML helpers; corrects error interpolation. |
src/verbecc/core/parsers/__init__.py |
Relocates parser package marker. |
src/verbecc/core/mlconjug/predictor.py |
Updates imports and probability-call typing. |
src/verbecc/core/mlconjug/model.py |
Modernizes typing and model representation. |
src/verbecc/core/mlconjug/model_utils.py |
Updates imports and resource APIs. |
src/verbecc/core/mlconjug/mltypes.py |
Defines relocated ML type aliases. |
src/verbecc/core/mlconjug/feature_extract.py |
Updates imports and return typing. |
src/verbecc/core/mlconjug/data_set.py |
Modernizes dataset collection annotations. |
src/verbecc/core/mlconjug/__init__.py |
Adds ML provenance documentation and metadata. |
src/verbecc/core/inflectors/lang/ro/inflector_ro.py |
Updates Romanian inflector imports and typing. |
src/verbecc/core/inflectors/lang/ro/__init__.py |
Exports Romanian inflector. |
src/verbecc/core/inflectors/lang/pt/inflector_pt.py |
Updates Portuguese inflector imports and typing. |
src/verbecc/core/inflectors/lang/pt/__init__.py |
Exports Portuguese inflector. |
src/verbecc/core/inflectors/lang/it/inflector_it.py |
Updates Italian inflector imports and typing. |
src/verbecc/core/inflectors/lang/it/__init__.py |
Exports Italian inflector. |
src/verbecc/core/inflectors/lang/fr/inflector_fr.py |
Updates typing and impersonal-verb helper name. |
src/verbecc/core/inflectors/lang/fr/__init__.py |
Exports French inflector. |
src/verbecc/core/inflectors/lang/es/__init__.py |
Exports Spanish inflector. |
src/verbecc/core/inflectors/lang/ca/inflector_ca.py |
Updates Catalan inflector imports and typing. |
src/verbecc/core/inflectors/lang/ca/__init__.py |
Exports Catalan inflector. |
src/verbecc/core/inflectors/lang/__init__.py |
Relocates language package marker. |
src/verbecc/core/inflectors/inflector_factory.py |
Uses reorganized language-package exports. |
src/verbecc/core/inflectors/__init__.py |
Adds relative language-package import. |
src/verbecc/core/defs/types/tense/tenses.py |
Relocates language-specific tense registry. |
src/verbecc/core/defs/types/tense/tense.py |
Relocates base tense enum with version fallback. |
src/verbecc/core/defs/types/tense/tense_factory.py |
Updates tense factory imports. |
src/verbecc/core/defs/types/tense/lang/ro/tense_ro.py |
Updates Romanian tense base import. |
src/verbecc/core/defs/types/tense/lang/ro/__init__.py |
Exports Romanian tense enum. |
src/verbecc/core/defs/types/tense/lang/pt/tense_pt.py |
Updates Portuguese tense base import. |
src/verbecc/core/defs/types/tense/lang/pt/__init__.py |
Exports Portuguese tense enum. |
src/verbecc/core/defs/types/tense/lang/it/tense_it.py |
Updates Italian tense base import. |
src/verbecc/core/defs/types/tense/lang/it/__init__.py |
Exports Italian tense enum. |
src/verbecc/core/defs/types/tense/lang/fr/tense_fr.py |
Updates French tense base import. |
src/verbecc/core/defs/types/tense/lang/fr/__init__.py |
Exports French tense enum. |
src/verbecc/core/defs/types/tense/lang/es/tense_es.py |
Updates Spanish tense base import. |
src/verbecc/core/defs/types/tense/lang/es/__init__.py |
Exports Spanish tense enum. |
src/verbecc/core/defs/types/tense/lang/en/tense_en.py |
Updates English tense base import. |
src/verbecc/core/defs/types/tense/lang/en/__init__.py |
Exports English tense enum. |
src/verbecc/core/defs/types/tense/lang/ca/tense_ca.py |
Updates Catalan tense base import. |
src/verbecc/core/defs/types/tense/lang/ca/__init__.py |
Exports Catalan tense enum. |
src/verbecc/core/defs/types/tense/lang/__init__.py |
Relocates tense-language package marker. |
src/verbecc/core/defs/types/tense/__init__.py |
Simplifies relative tense exports. |
src/verbecc/core/defs/types/pronoun/pronouns.py |
Relocates language-specific pronoun registry. |
src/verbecc/core/defs/types/pronoun/pronoun.py |
Relocates base pronoun enum with version fallback. |
src/verbecc/core/defs/types/pronoun/pronoun_factory.py |
Updates pronoun factory imports. |
src/verbecc/core/defs/types/pronoun/lang/ro/pronoun_ro.py |
Updates Romanian pronoun base import. |
src/verbecc/core/defs/types/pronoun/lang/ro/__init__.py |
Exports Romanian pronoun enum. |
src/verbecc/core/defs/types/pronoun/lang/pt/pronoun_pt.py |
Updates Portuguese pronoun base import. |
src/verbecc/core/defs/types/pronoun/lang/pt/__init__.py |
Exports Portuguese pronoun enum. |
src/verbecc/core/defs/types/pronoun/lang/it/pronoun_it.py |
Updates Italian pronoun base import. |
src/verbecc/core/defs/types/pronoun/lang/it/__init__.py |
Exports Italian pronoun enum. |
src/verbecc/core/defs/types/pronoun/lang/fr/pronoun_fr.py |
Updates French pronoun base import. |
src/verbecc/core/defs/types/pronoun/lang/fr/__init__.py |
Exports French pronoun enum. |
src/verbecc/core/defs/types/pronoun/lang/es/pronoun_es.py |
Updates Spanish pronoun base import. |
src/verbecc/core/defs/types/pronoun/lang/es/__init__.py |
Exports Spanish pronoun enum. |
src/verbecc/core/defs/types/pronoun/lang/en/pronoun_en.py |
Updates English pronoun base import. |
src/verbecc/core/defs/types/pronoun/lang/en/__init__.py |
Exports English pronoun enum. |
src/verbecc/core/defs/types/pronoun/lang/ca/pronoun_ca.py |
Updates Catalan pronoun base import. |
src/verbecc/core/defs/types/pronoun/lang/ca/__init__.py |
Exports Catalan pronoun enum. |
src/verbecc/core/defs/types/pronoun/__init__.py |
Simplifies relative pronoun exports. |
src/verbecc/core/defs/types/person.py |
Relocates grammatical-person enum. |
src/verbecc/core/defs/types/participle_inflection.py |
Updates grammatical type imports. |
src/verbecc/core/defs/types/number.py |
Relocates grammatical-number enum. |
src/verbecc/core/defs/types/mood/moods.py |
Relocates language-specific mood registry. |
src/verbecc/core/defs/types/mood/mood.py |
Relocates base mood enum with version fallback. |
src/verbecc/core/defs/types/mood/mood_factory.py |
Updates mood factory imports. |
src/verbecc/core/defs/types/mood/lang/ro/mood_ro.py |
Updates Romanian mood base import. |
src/verbecc/core/defs/types/mood/lang/ro/__init__.py |
Exports Romanian mood enum. |
src/verbecc/core/defs/types/mood/lang/pt/mood_pt.py |
Updates Portuguese mood base import. |
src/verbecc/core/defs/types/mood/lang/pt/__init__.py |
Exports Portuguese mood enum. |
src/verbecc/core/defs/types/mood/lang/it/mood_it.py |
Updates Italian mood base import. |
src/verbecc/core/defs/types/mood/lang/it/__init__.py |
Exports Italian mood enum. |
src/verbecc/core/defs/types/mood/lang/fr/mood_fr.py |
Updates French mood base import. |
src/verbecc/core/defs/types/mood/lang/fr/__init__.py |
Exports French mood enum. |
src/verbecc/core/defs/types/mood/lang/es/mood_es.py |
Updates Spanish mood base import. |
src/verbecc/core/defs/types/mood/lang/es/__init__.py |
Exports Spanish mood enum. |
src/verbecc/core/defs/types/mood/lang/en/mood_en.py |
Updates English mood base import. |
src/verbecc/core/defs/types/mood/lang/en/__init__.py |
Exports English mood enum. |
src/verbecc/core/defs/types/mood/lang/ca/mood_ca.py |
Updates Catalan mood base import. |
src/verbecc/core/defs/types/mood/lang/ca/__init__.py |
Exports Catalan mood enum. |
src/verbecc/core/defs/types/mood/lang/__init__.py |
Relocates mood-language package marker. |
src/verbecc/core/defs/types/mood/__init__.py |
Simplifies relative mood exports. |
src/verbecc/core/defs/types/lang_specific_options/lang/es/voseo_options.py |
Relocates Spanish voseo enum. |
src/verbecc/core/defs/types/lang_specific_options/lang/es/lang_specific_options_es.py |
Updates Spanish option imports. |
src/verbecc/core/defs/types/lang_specific_options/lang/es/__init__.py |
Exports Spanish option types. |
src/verbecc/core/defs/types/lang_specific_options/lang/__init__.py |
Relocates option-language package marker. |
src/verbecc/core/defs/types/lang_specific_options/lang_specific_options.py |
Relocates language-option interface. |
src/verbecc/core/defs/types/lang_specific_options/lang_specific_options_factory.py |
Updates option factory imports. |
src/verbecc/core/defs/types/lang_specific_options/__init__.py |
Simplifies language-option exports. |
src/verbecc/core/defs/types/lang_code.py |
Relocates language-code enum. |
src/verbecc/core/defs/types/gender.py |
Relocates grammatical-gender enum. |
src/verbecc/core/defs/types/exceptions/verbs_parser_error.py |
Relocates verbs-parser exception. |
src/verbecc/core/defs/types/exceptions/verb_not_found_error.py |
Relocates missing-verb exception. |
src/verbecc/core/defs/types/exceptions/template_not_found_error.py |
Relocates missing-template exception. |
src/verbecc/core/defs/types/exceptions/invalid_tense_error.py |
Relocates invalid-tense exception. |
src/verbecc/core/defs/types/exceptions/invalid_mood_error.py |
Relocates invalid-mood exception. |
src/verbecc/core/defs/types/exceptions/invalid_lang_error.py |
Relocates invalid-language exception. |
src/verbecc/core/defs/types/exceptions/conjugator_error.py |
Relocates conjugator exception. |
src/verbecc/core/defs/types/exceptions/conjugations_parser_error.py |
Relocates conjugations-parser exception. |
src/verbecc/core/defs/types/exceptions/conjugation_template_error.py |
Relocates template exception. |
src/verbecc/core/defs/types/exceptions/__init__.py |
Re-exports exceptions through relative imports. |
src/verbecc/core/defs/types/data/xml_types.py |
Adds shared lxml type aliases. |
src/verbecc/core/defs/types/data/verbs.py |
Updates imports and verb-list typing. |
src/verbecc/core/defs/types/data/verb.py |
Updates imports and representation formatting. |
src/verbecc/core/defs/types/data/tense_template.py |
Broadens string-compatible grammar annotations. |
src/verbecc/core/defs/types/data/person_ending.py |
Broadens annotations and adds casts. |
src/verbecc/core/defs/types/data/mood_template.py |
Relocates mood-template model. |
src/verbecc/core/defs/types/data/element.py |
Relocates parsed-element interface. |
src/verbecc/core/defs/types/data/conjugations.py |
Updates imports and template-list typing. |
src/verbecc/core/defs/types/data/conjugation_template.py |
Updates imports and mood-map typing. |
src/verbecc/core/defs/types/conjugation/verb_info.py |
Updates serialized-data typing and removes unused state. |
src/verbecc/core/defs/types/conjugation/verb_info_data.py |
Modernizes relocated verb-data alias. |
src/verbecc/core/defs/types/conjugation/tense_conjugation.py |
Updates imports and collection typing. |
src/verbecc/core/defs/types/conjugation/tense_conjugation_data.py |
Modernizes relocated tense-data alias. |
src/verbecc/core/defs/types/conjugation/moods_conjugation.py |
Updates imports and mood-map typing. |
src/verbecc/core/defs/types/conjugation/moods_conjugation_data.py |
Modernizes relocated moods-data alias. |
src/verbecc/core/defs/types/conjugation/mood_conjugation.py |
Adds public mood accessor and modernizes typing. |
src/verbecc/core/defs/types/conjugation/mood_conjugation_util.py |
Replaces direct private-field access. |
src/verbecc/core/defs/types/conjugation/mood_conjugation_data.py |
Modernizes relocated mood-data alias. |
src/verbecc/core/defs/types/conjugation/conjugation.py |
Adds typed indexing overloads and updates slicing. |
src/verbecc/core/defs/types/conjugation/conjugation_data.py |
Modernizes serialized-data aliases. |
src/verbecc/core/defs/types/conjugation/complete_conjugation.py |
Changes mood iteration implementation. |
src/verbecc/core/defs/types/conjugation/complete_conjugation_data.py |
Modernizes relocated complete-data alias. |
src/verbecc/core/defs/types/conjugation/abstract_conjugation.py |
Cleans imports and simplifies parent assignment. |
src/verbecc/core/defs/types/conjugation/__init__.py |
Narrows conjugation re-exports. |
src/verbecc/core/defs/types/config/verbecc_config.py |
Uses YAMLWizard v0 namespace. |
src/verbecc/core/defs/types/config/logging/stream_handler_config.py |
Updates handler-base import. |
src/verbecc/core/defs/types/config/logging/logging_config.py |
Relocates and modernizes logging configuration. |
src/verbecc/core/defs/types/config/logging/logger_config.py |
Modernizes handler-list annotations. |
src/verbecc/core/defs/types/config/logging/handler_config.py |
Relocates handler configuration model. |
src/verbecc/core/defs/types/config/logging/formatter_config.py |
Relocates formatter configuration model. |
src/verbecc/core/defs/types/config/logging/file_handler_config.py |
Updates handler-base import. |
src/verbecc/core/defs/types/config/logging/__init__.py |
Keeps logging package exports minimal. |
src/verbecc/core/defs/types/config/json_opts.py |
Uses YAMLWizard v0 namespace. |
src/verbecc/core/defs/types/config/jsbeautifier_opts.py |
Uses YAMLWizard v0 namespace. |
src/verbecc/core/defs/types/__init__.py |
Relocates types package marker. |
src/verbecc/core/defs/constants/localization.py |
Explicitly permits string inputs. |
src/verbecc/core/defs/constants/grammar_defines.py |
Updates imports and constant-map annotations. |
src/verbecc/core/defs/constants/__init__.py |
Relocates constants package marker. |
src/verbecc/core/defs/__init__.py |
Relocates definitions package marker. |
src/verbecc/core/conjugator/tense_conjugator.py |
Updates helper calls, accessors, and API typing. |
src/verbecc/core/conjugator/tense_conjugator_simple.py |
Exposes simple-tense conjugation helper. |
src/verbecc/core/conjugator/tense_conjugator_compound.py |
Updates delegation and participle typing. |
src/verbecc/core/conjugator/mood_conjugator.py |
Updates helper calls and string-input annotations. |
src/verbecc/core/conjugator/conjugator.py |
Broadens grammatical input annotations. |
src/verbecc/core/conjugator/conjugation_object.py |
Updates conjugation-context imports. |
src/verbecc/core/conjugator/complete_conjugator.py |
Updates API typing and adds inflector accessor. |
src/verbecc/core/conjugator/abstract_conjugator.py |
Renames context helper and modernizes annotations. |
src/verbecc/core/conjugator/__init__.py |
Re-exports CompleteConjugator. |
src/verbecc/core/__init__.py |
Preserves core conjugator entry point. |
src/verbecc/config/verbecc_config.yaml |
Relocates runtime configuration defaults. |
src/verbecc/config/logging_config.yaml |
Relocates logging configuration defaults. |
src/verbecc/__init__.py |
Preserves public conjugator entry point. |
setup.py |
Removes legacy setuptools shim. |
setup.cfg |
Corrects metadata option spelling. |
scripts/__init__.py |
Adds scripts package marker. |
requirements.txt |
Removes separate dependency listing. |
pyproject.toml |
Updates release, dependencies, packaging, and tooling. |
CONTRIBUTING.md |
Documents uv workflow and consolidated style rules. |
CHANGELOG.md |
Documents release changes and migration details. |
.python-version |
Selects Python 3.14 for development. |
.gitignore |
Ignores uv environments and relocated models. |
.github/workflows/python-package.yml |
Uses uv, Python 3.10–3.14, and wheel smoke tests. |
Review effort: Balanced
| elem (XmlElement): The XML element to convert. | ||
| Returns: | ||
| str: A string representation of the XML element.""" | ||
| return str(etree.tostring(cast(etree._Element, elem), encoding=encoding, method=method, xml_declaration=xml_declaration, pretty_print=pretty_print)) # type: ignore |
peterabolins
left a comment
There was a problem hiding this comment.
Thanks, Brett, and no apology needed.
Re-tested at 412f3f8:
Both blockers fixed. The wheel now ships the data and config, from verbecc import CompleteConjugator works again, and the wheel smoke test in CI should keep it that way.
Romanian output unchanged. All 6,872 Romanian verbs are byte-identical to 2.0.3, from a clean-venv install of the built wheel, apart from pred_score on predicted verbs.
Suite and lint clean. uv sync --locked, ruff and pytest all pass (558 passed, 2 skipped).
Copilot’s xml_utils.py:31 finding reproduces: str(etree.tostring(...)) returns the text of the bytes literal, not decoded XML. In the library it only reaches error messages. scripts/xml_modifier.py does need bytes, though, and currently fails with TypeError on write. Having elem_tobytes call etree.tostring directly, and xml_element_to_string return .decode(encoding), should fix both. It’s not a blocker for me, but it’s worth fixing before release.
Approving from my side.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>


Verbecc 2.1.0 release -- Misc. modernization
Target release date: 8 November 2026
PR feedback appreciated
Most significantly:
verbecc/verbecc/srctoverbecc/src/verbeccverbecc.srctoverbecc.core__init__.pyfiles, potentially breaking some importspiptouv(10x to 100x faster than pip)For detailed listing of changes see CHANGELOG